package com.nlecloud.bc.contract;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.fisco.bcos.sdk.abi.FunctionReturnDecoder;
import org.fisco.bcos.sdk.abi.TypeReference;
import org.fisco.bcos.sdk.abi.datatypes.DynamicArray;
import org.fisco.bcos.sdk.abi.datatypes.Event;
import org.fisco.bcos.sdk.abi.datatypes.Function;
import org.fisco.bcos.sdk.abi.datatypes.Type;
import org.fisco.bcos.sdk.abi.datatypes.Utf8String;
import org.fisco.bcos.sdk.abi.datatypes.generated.Int256;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple3;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple5;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple6;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple7;
import org.fisco.bcos.sdk.client.Client;
import org.fisco.bcos.sdk.contract.Contract;
import org.fisco.bcos.sdk.crypto.CryptoSuite;
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.eventsub.EventCallback;
import org.fisco.bcos.sdk.model.CryptoType;
import org.fisco.bcos.sdk.model.TransactionReceipt;
import org.fisco.bcos.sdk.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class Copyright extends Contract {
    public static final String[] BINARY_ARRAY = {"60806040523480156200001157600080fd5b506110016000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356004b6a6040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162000101919062000270565b602060405180830381600087803b1580156200011c57600080fd5b505af115801562000131573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000157919081019062000174565b506200031a565b60006200016c8251620002c9565b905092915050565b6000602082840312156200018757600080fd5b600062000197848285016200015e565b91505092915050565b6000620001ad82620002be565b808452620001c3816020860160208601620002d3565b620001ce8162000309565b602085010191505092915050565b6000603182527f757569642c7469746c652c686173682c616d6f756e742c6f776e657269642c6160208301527f7574686f722c74696d652c7374617475730000000000000000000000000000006040830152606082019050919050565b6000600782527f74625f6e616d65000000000000000000000000000000000000000000000000006020830152604082019050919050565b600060608201905081810360008301526200028c8184620001a0565b90508181036020830152620002a18162000239565b90508181036040830152620002b681620001dc565b905092915050565b600081519050919050565b6000819050919050565b60005b83811015620002f3578082015181840152602081019050620002d6565b8381111562000303576000848401525b50505050565b6000601f19601f8301169050919050565b615249806200032a6000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063385abc35146100885780634b401005146100c55780636a10afce146101035780638806163e14610140578063af887e9214610182578063d866a623146101bf578063fb4cf89714610202575b600080fd5b34801561009457600080fd5b506100af60048036036100aa9190810190614538565b610244565b6040516100bc9190614a87565b60405180910390f35b3480156100d157600080fd5b506100ec60048036036100e791908101906144b6565b6107ff565b6040516100fa929190614b4f565b60405180910390f35b34801561010f57600080fd5b5061012a6004803603610125919081019061459f565b610e57565b6040516101379190614a87565b60405180910390f35b34801561014c57600080fd5b5061016760048036036101629190810190614538565b611417565b60405161017996959493929190614aa2565b60405180910390f35b34801561018e57600080fd5b506101a960048036036101a4919081019061460b565b6122a2565b6040516101b69190614a87565b60405180910390f35b3480156101cb57600080fd5b506101e660048036036101e191908101906144b6565b612a72565b6040516101f99796959493929190614bbc565b60405180910390f35b34801561020e57600080fd5b5061022960048036036102249190810190614467565b6133e2565b60405161023b96959493929190614aa2565b60405180910390f35b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016102f79190614b9a565b602060405180830381600087803b15801561031157600080fd5b505af1158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103499190810190614415565b93508373ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156103af57600080fd5b505af11580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103e791908101906143ec565b92508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161043e9190614e52565b600060405180830381600087803b15801561045857600080fd5b505af115801561046c573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104c59190614f2a565b600060405180830381600087803b1580156104df57600080fd5b505af11580156104f3573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561055b57600080fd5b505af115801561056f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610593919081019061439a565b91508173ffffffffffffffffffffffffffffffffffffffff1663cd30a1d16040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161061f9190614ed5565b600060405180830381600087803b15801561063957600080fd5b505af115801561064d573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663cd30a1d1896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106a69190614dfd565b600060405180830381600087803b1580156106c057600080fd5b505af11580156106d4573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663bf2b70a16040805190810160405280600b81526020017f745f636f7079726967687400000000000000000000000000000000000000000081525085856040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161076693929190614ca7565b602060405180830381600087803b15801561078057600080fd5b505af1158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107b8919081019061443e565b90507f27411e7ea8f9b27345576e9ae7238cf8d5570beae767bd0cd18032e9b11283a3816040516107e99190614a87565b60405180910390a1809450505050509392505050565b600060606000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016108b49190614b9a565b602060405180830381600087803b1580156108ce57600080fd5b505af11580156108e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109069190810190614415565b93508373ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561096c57600080fd5b505af1158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109a4919081019061439a565b92508273ffffffffffffffffffffffffffffffffffffffff1663cd30a1d1886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016109fb9190614dfd565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610a29573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663e44594b960026040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610a839190614f86565b600060405180830381600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663e8434e396040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b41929190614c47565b602060405180830381600087803b158015610b5b57600080fd5b505af1158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b9391908101906143c3565b9150600095506020604051908101604052806000815250945060008273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610c1257600080fd5b505af1158015610c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c4a919081019061443e565b1315610e4e578173ffffffffffffffffffffffffffffffffffffffff1663846719e060006040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610ca69190614b7f565b602060405180830381600087803b158015610cc057600080fd5b505af1158015610cd4573d6000803e3d6000fd5b50","5050506040513d601f19601f82011682018060405250610cf891908101906143ec565b90508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d4d90614e32565b602060405180830381600087803b158015610d6757600080fd5b505af1158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d9f919081019061443e565b95508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610df490614e80565b600060405180830381600087803b158015610e0e57600080fd5b505af1158015610e22573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610e4b91908101906144f7565b94505b50505050915091565b6000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610f0b9190614b9a565b602060405180830381600087803b158015610f2557600080fd5b505af1158015610f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f5d9190810190614415565b9450600193508473ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610fc757600080fd5b505af1158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fff91908101906143ec565b92508273ffffffffffffffffffffffffffffffffffffffff1663e942b516886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016110569190614ea0565b600060405180830381600087803b15801561107057600080fd5b505af1158015611084573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74856040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016110dd9190614f58565b600060405180830381600087803b1580156110f757600080fd5b505af115801561110b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561117357600080fd5b505af1158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111ab919081019061439a565b91508173ffffffffffffffffffffffffffffffffffffffff1663cd30a1d16040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016112379190614ed5565b600060405180830381600087803b15801561125157600080fd5b505af1158015611265573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663cd30a1d1896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016112be9190614dfd565b600060405180830381600087803b1580156112d857600080fd5b505af11580156112ec573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663bf2b70a16040805190810160405280600b81526020017f745f636f7079726967687400000000000000000000000000000000000000000081525085856040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161137e93929190614ca7565b602060405180830381600087803b15801561139857600080fd5b505af11580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113d0919081019061443e565b90507f27411e7ea8f9b27345576e9ae7238cf8d5570beae767bd0cd18032e9b11283a3816040516114019190614a87565b60405180910390a1809550505050505092915050565b6000606080606080606060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016114d49190614b9a565b602060405180830381600087803b1580156114ee57600080fd5b505af1158015611502573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115269190810190614415565b94508473ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561158c57600080fd5b505af11580156115a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115c4919081019061439a565b935060008e511115611658578373ffffffffffffffffffffffffffffffffffffffff1663cd30a1d18f6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016116259190614ea0565b600060405180830381600087803b15801561163f57600080fd5b505af1158015611653573d6000803e3d6000fd5b505050505b8473ffffffffffffffffffffffffffffffffffffffff1663e8434e396040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016116e4929190614c47565b602060405180830381600087803b1580156116fe57600080fd5b505af1158015611712573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061173691908101906143c3565b92508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561179c57600080fd5b505af11580156117b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117d4919081019061443e565b9a508373ffffffffffffffffffffffffffffffffffffffff16637ec1cc6560018f038e6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611830929190614b26565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663e8434e396040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016118ee929190614c47565b602060405180830381600087803b15801561190857600080fd5b505af115801561191c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061194091908101906143c3565b92508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156119a657600080fd5b505af11580156119ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119de919081019061443e565b604051908082528060200260200182016040528015611a1157816020015b60608152602001906001900390816119fc5790505b5099508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611a7857600080fd5b505af1158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ab0919081019061443e565b604051908082528060200260200182016040528015611ae357816020015b6060815260200190600190039081611ace5790505b5098508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611b4a57600080fd5b505af1158015611b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b82919081019061443e565b604051908082528060200260200182016040528015611bb05781602001602082028038833980820191505090505b5097508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c4f919081019061443e565b604051908082528060200260200182016040528015611c8257816020015b6060815260200190600190039081611c6d5790505b5096508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180","830381600087803b158015611ce957600080fd5b505af1158015611cfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d21919081019061443e565b604051908082528060200260200182016040528015611d4f5781602001602082028038833980820191505090505b509550600091505b8273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611dbb57600080fd5b505af1158015611dcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611df3919081019061443e565b82121561227f578273ffffffffffffffffffffffffffffffffffffffff1663846719e0836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611e4f9190614a87565b602060405180830381600087803b158015611e6957600080fd5b505af1158015611e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea191908101906143ec565b90508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611ef690614ddd565b600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611f4d91908101906144f7565b8a83815181101515611f5b57fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611fbb90614fb4565b600060405180830381600087803b158015611fd557600080fd5b505af1158015611fe9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061201291908101906144f7565b898381518110151561202057fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161208090614f0a565b602060405180830381600087803b15801561209a57600080fd5b505af11580156120ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120d2919081019061443e565b88838151811015156120e057fe5b90602001906020020181815250508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161214190614d88565b600060405180830381600087803b15801561215b57600080fd5b505af115801561216f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061219891908101906144f7565b87838151811015156121a657fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161220690614ce5565b602060405180830381600087803b15801561222057600080fd5b505af1158015612234573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612258919081019061443e565b868381518110151561226657fe5b9060200190602002018181525050816001019150611d57565b8a8a8a8a8a8a9a509a509a509a509a509a50505050505093975093979195509350565b60008060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016123589190614b9a565b602060405180830381600087803b15801561237257600080fd5b505af1158015612386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123aa9190810190614415565b955060019450600093504292508573ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561241b57600080fd5b505af115801561242f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061245391908101906143ec565b91508173ffffffffffffffffffffffffffffffffffffffff1663e942b5166040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016124df9190614ed5565b600060405180830381600087803b1580156124f957600080fd5b505af115801561250d573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168d6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016125669190614dfd565b600060405180830381600087803b15801561258057600080fd5b505af1158015612594573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016125ed9190614fd4565b600060405180830381600087803b15801561260757600080fd5b505af115801561261b573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016126749190614d53565b600060405180830381600087803b15801561268e57600080fd5b505af11580156126a2573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168a6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016126fb9190614ea0565b600060405180830381600087803b15801561271557600080fd5b505af1158015612729573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba74856040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016127829190614e52565b600060405180830381600087803b15801561279c57600080fd5b505af11580156127b0573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b516896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016128099190614da8565b600060405180830381600087803b15801561282357600080fd5b505af1158015612837573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16638a42ebe9846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016128909190614d05565b600060405180830381600087803b1580156128aa57600080fd5b505af11580156128be573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba74866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016129179190614f58565b600060405180830381600087803b15801561293157600080fd5b505af1158015612945573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff166331afac366040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016129d5929190614c77565b602060405180830381600087803b1580156129ef57600080fd5b505af1158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a27919081019061443e565b90507ff69b809a07d5d37f43f3dc41044eb4dd836c33f32b30a5a42bdcb01b152feca981604051612a589190614a87565b60405180910390a180965050505050505095945050505050565b60608060006060806000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612b2e9190614b9a565b602060405180830381600087803b158015612b4857600080fd5b505af1158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b809190810190614415565b93508373ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612be657600080fd5b505af1158015612bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c1e919081019061439a565b92508273ffffffffffffffffffffffffffffffffffffffff1663cd30a1d18d6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612c759190614dfd565b600060405180830381600087803b158015612c8f57600080fd5b505af1158015612ca3573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663e8434e396040805190810160405280600b8152602001","7f745f636f70797269676874000000000000000000000000000000000000000000815250856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612d33929190614c47565b602060405180830381600087803b158015612d4d57600080fd5b505af1158015612d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d8591908101906143c3565b915060206040519081016040528060008152509a5060206040519081016040528060008152509950600098506020604051908101604052806000815250975060206040519081016040528060008152509650600095506000945060008273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612e4557600080fd5b505af1158015612e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e7d919081019061443e565b13156133d3578173ffffffffffffffffffffffffffffffffffffffff1663846719e060006040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612ed99190614b7f565b602060405180830381600087803b158015612ef357600080fd5b505af1158015612f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f2b91908101906143ec565b90508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612f8090614fb4565b600060405180830381600087803b158015612f9a57600080fd5b505af1158015612fae573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250612fd791908101906144f7565b9a508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161302c90614d33565b600060405180830381600087803b15801561304657600080fd5b505af115801561305a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061308391908101906144f7565b99508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016130d890614e32565b602060405180830381600087803b1580156130f257600080fd5b505af1158015613106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061312a919081019061443e565b98508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161317f90614e80565b600060405180830381600087803b15801561319957600080fd5b505af11580156131ad573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506131d691908101906144f7565b97508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161322b90614d88565b600060405180830381600087803b15801561324557600080fd5b505af1158015613259573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061328291908101906144f7565b96508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016132d790614ce5565b602060405180830381600087803b1580156132f157600080fd5b505af1158015613305573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613329919081019061443e565b95508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161337e90614f0a565b602060405180830381600087803b15801561339857600080fd5b505af11580156133ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133d0919081019061443e565b94505b50505050919395979092949650565b6000606080606080606060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161349f9190614b9a565b602060405180830381600087803b1580156134b957600080fd5b505af11580156134cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134f19190810190614415565b94508473ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561355757600080fd5b505af115801561356b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061358f919081019061439a565b93508373ffffffffffffffffffffffffffffffffffffffff1663e44594b98f6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016135e69190614f58565b600060405180830381600087803b15801561360057600080fd5b505af1158015613614573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663e8434e396040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016136a4929190614c47565b602060405180830381600087803b1580156136be57600080fd5b505af11580156136d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136f691908101906143c3565b92508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561375c57600080fd5b505af1158015613770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613794919081019061443e565b9a508373ffffffffffffffffffffffffffffffffffffffff16637ec1cc6560018f038e6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016137f0929190614b26565b600060405180830381600087803b15801561380a57600080fd5b505af115801561381e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663e8434e396040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016138ae929190614c47565b602060405180830381600087803b1580156138c857600080fd5b505af11580156138dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061390091908101906143c3565b92508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561396657600080fd5b505af115801561397a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061399e919081019061443e565b6040519080825280602002602001820160405280156139d157816020015b60608152602001906001900390816139bc5790505b5099508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613a3857600080fd5b505af1158015613a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613a70919081019061443e565b604051908082528060200260200182016040528015613aa357816020015b6060815260200190600190039081613a8e5790505b5098508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613b0a57600080fd5b505af1158015613b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b42919081019061443e565b604051908082528060200260200182016040528015613b705781602001602082028038833980820191505090505b5097508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613bd757600080fd5b505af1158015613beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613c0f919081019061443e565b604051908082528060200260200182016040528015613c4257816020015b6060815260200190600190039081613c2d5790505b5096508273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613ca957600080fd5b505af1158015613cbd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061","3ce1919081019061443e565b604051908082528060200260200182016040528015613d0f5781602001602082028038833980820191505090505b509550600091505b8273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613d7b57600080fd5b505af1158015613d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613db3919081019061443e565b82121561423f578273ffffffffffffffffffffffffffffffffffffffff1663846719e0836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613e0f9190614a87565b602060405180830381600087803b158015613e2957600080fd5b505af1158015613e3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613e6191908101906143ec565b90508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613eb690614ddd565b600060405180830381600087803b158015613ed057600080fd5b505af1158015613ee4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250613f0d91908101906144f7565b8a83815181101515613f1b57fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613f7b90614fb4565b600060405180830381600087803b158015613f9557600080fd5b505af1158015613fa9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250613fd291908101906144f7565b8983815181101515613fe057fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161404090614e32565b602060405180830381600087803b15801561405a57600080fd5b505af115801561406e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614092919081019061443e565b88838151811015156140a057fe5b90602001906020020181815250508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161410190614d88565b600060405180830381600087803b15801561411b57600080fd5b505af115801561412f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061415891908101906144f7565b878381518110151561416657fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016141c690614ce5565b602060405180830381600087803b1580156141e057600080fd5b505af11580156141f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614218919081019061443e565b868381518110151561422657fe5b9060200190602002018181525050816001019150613d17565b8a8a8a8a8a8a9a509a509a509a509a509a50505050505093975093979195509350565b600061426e8251615103565b905092915050565b60006142828251615115565b905092915050565b60006142968251615127565b905092915050565b60006142aa8251615139565b905092915050565b60006142be823561514b565b905092915050565b60006142d2825161514b565b905092915050565b60006142e68235615155565b905092915050565b600082601f830112151561430157600080fd5b813561431461430f82615036565b615009565b9150808252602083016020830185838301111561433057600080fd5b61433b8382846151bc565b50505092915050565b600082601f830112151561435757600080fd5b815161436a61436582615036565b615009565b9150808252602083016020830185838301111561438657600080fd5b6143918382846151cb565b50505092915050565b6000602082840312156143ac57600080fd5b60006143ba84828501614262565b91505092915050565b6000602082840312156143d557600080fd5b60006143e384828501614276565b91505092915050565b6000602082840312156143fe57600080fd5b600061440c8482850161428a565b91505092915050565b60006020828403121561442757600080fd5b60006144358482850161429e565b91505092915050565b60006020828403121561445057600080fd5b600061445e848285016142c6565b91505092915050565b60008060006060848603121561447c57600080fd5b600061448a868287016142da565b935050602061449b868287016142b2565b92505060406144ac868287016142b2565b9150509250925092565b6000602082840312156144c857600080fd5b600082013567ffffffffffffffff8111156144e257600080fd5b6144ee848285016142ee565b91505092915050565b60006020828403121561450957600080fd5b600082015167ffffffffffffffff81111561452357600080fd5b61452f84828501614344565b91505092915050565b60008060006060848603121561454d57600080fd5b600084013567ffffffffffffffff81111561456757600080fd5b614573868287016142ee565b9350506020614584868287016142b2565b9250506040614595868287016142b2565b9150509250925092565b600080604083850312156145b257600080fd5b600083013567ffffffffffffffff8111156145cc57600080fd5b6145d8858286016142ee565b925050602083013567ffffffffffffffff8111156145f557600080fd5b614601858286016142ee565b9150509250929050565b600080600080600060a0868803121561462357600080fd5b600086013567ffffffffffffffff81111561463d57600080fd5b614649888289016142ee565b955050602086013567ffffffffffffffff81111561466657600080fd5b614672888289016142ee565b945050604086013567ffffffffffffffff81111561468f57600080fd5b61469b888289016142ee565b935050606086013567ffffffffffffffff8111156146b857600080fd5b6146c4888289016142ee565b925050608086013567ffffffffffffffff8111156146e157600080fd5b6146ed888289016142ee565b9150509295509295909350565b60006147058261507c565b80845260208401935061471783615062565b60005b828110156147495761472d8683516147e1565b614736826150a8565b915060208601955060018101905061471a565b50849250505092915050565b600061476082615087565b808452602084019350836020820285016147798561506f565b60005b848110156147b2578383038852614794838351614853565b925061479f826150b5565b915060208801975060018101905061477c565b508196508694505050505092915050565b6147cc81615162565b82525050565b6147db81615174565b82525050565b6147ea816150e2565b82525050565b6147f981615186565b82525050565b61480881615198565b82525050565b614817816151aa565b82525050565b60006148288261509d565b80845261483c8160208601602086016151cb565b614845816151fe565b602085010191505092915050565b600061485e82615092565b8084526148728160208601602086016151cb565b61487b816151fe565b602085010191505092915050565b6000600482527f74696d65000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f68617368000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600682527f617574686f7200000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f75756964000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600682527f616d6f756e7400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f6f776e65726964000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f74625f6e616d65000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600682527f73746174757300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600582527f7469746c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b614a81816150f9565b82525050565b6000602082019050614a9c60008301846147e1565b92915050565b600060c082019050614ab760008301896147e1565b8181036020830152614ac98188614755565b90508181036040830152614add8187614755565b90508181036060830152614af181866146fa565b90508181036080830152614b058185614755565b905081810360a0830152614b1981846146fa565b9050979650505050505050565b6000604082019050614b3b60008301856147e1565b614b4860208301846147e1565b9392505050565b6000604082019050614b6460008301856147e1565b8181036020830152614b76818461481d565b90509392505050565b6000602082019050614b9460008301846147ff565b92915050565b60006020820190508181036000830152614bb48184614853565b905092915050565b600060e0820190508181036000830152614bd6818a61481d565b90508181036020830152614bea818961481d565b9050614bf960408301886147e1565b8181036060830152614c0b818761481d565b90508181036080830152614c1f818661481d565b9050614c2e60a08301856147e1565b614c3b60c08301846147e1565b98975050505050505050565b60006040820190508181036000830152614c618185614853565b9050614c7060208301846147c3565b9392505050565b60006040820190508181036000830152614c918185614853565b9050614ca060208301846147d2565b9392505050565b60006060820190508181036000830152614cc18186614853565b9050614cd060208301856147d2565b614cdd6040","8301846147c3565b949350505050565b60006020820190508181036000830152614cfe81614889565b9050919050565b60006040820190508181036000830152614d1e81614889565b9050614d2d6020830184614a78565b92915050565b60006020820190508181036000830152614d4c816148c0565b9050919050565b60006040820190508181036000830152614d6c816148c0565b90508181036020830152614d80818461481d565b905092915050565b60006020820190508181036000830152614da1816148f7565b9050919050565b60006040820190508181036000830152614dc1816148f7565b90508181036020830152614dd5818461481d565b905092915050565b60006020820190508181036000830152614df68161492e565b9050919050565b60006040820190508181036000830152614e168161492e565b90508181036020830152614e2a818461481d565b905092915050565b60006020820190508181036000830152614e4b81614965565b9050919050565b60006040820190508181036000830152614e6b81614965565b9050614e7a60208301846147e1565b92915050565b60006020820190508181036000830152614e998161499c565b9050919050565b60006040820190508181036000830152614eb98161499c565b90508181036020830152614ecd818461481d565b905092915050565b60006040820190508181036000830152614eee816149d3565b90508181036020830152614f028184614853565b905092915050565b60006020820190508181036000830152614f2381614a0a565b9050919050565b60006040820190508181036000830152614f4381614a0a565b9050614f5260208301846147e1565b92915050565b60006040820190508181036000830152614f7181614a0a565b9050614f8060208301846147f0565b92915050565b60006040820190508181036000830152614f9f81614a0a565b9050614fae602083018461480e565b92915050565b60006020820190508181036000830152614fcd81614a41565b9050919050565b60006040820190508181036000830152614fed81614a41565b90508181036020830152615001818461481d565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561502c57600080fd5b8060405250919050565b600067ffffffffffffffff82111561504d57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60008160000b9050919050565b6000819050919050565b600061510e826150c2565b9050919050565b6000615120826150c2565b9050919050565b6000615132826150c2565b9050919050565b6000615144826150c2565b9050919050565b6000819050919050565b60008160000b9050919050565b600061516d826150c2565b9050919050565b600061517f826150c2565b9050919050565b6000615191826150ec565b9050919050565b60006151a3826150e2565b9050919050565b60006151b5826150e2565b9050919050565b82818337600083830152505050565b60005b838110156151e95780820151818401526020810190506151ce565b838111156151f8576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820b0851192e02243f80b486d421765976345fc5c079cdff45ed550a6a0c6253a106c6578706572696d656e74616cf50037"};

    public static final String BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {"60806040523480156200001157600080fd5b506110016000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c92a78016040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162000101919062000270565b602060405180830381600087803b1580156200011c57600080fd5b505af115801562000131573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000157919081019062000174565b506200031a565b60006200016c8251620002c9565b905092915050565b6000602082840312156200018757600080fd5b600062000197848285016200015e565b91505092915050565b6000620001ad82620002be565b808452620001c3816020860160208601620002d3565b620001ce8162000309565b602085010191505092915050565b6000600782527f74625f6e616d65000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000603182527f757569642c7469746c652c686173682c616d6f756e742c6f776e657269642c6160208301527f7574686f722c74696d652c7374617475730000000000000000000000000000006040830152606082019050919050565b600060608201905081810360008301526200028c8184620001a0565b90508181036020830152620002a181620001dc565b90508181036040830152620002b68162000213565b905092915050565b600081519050919050565b6000819050919050565b60005b83811015620002f3578082015181840152602081019050620002d6565b8381111562000303576000848401525b50505050565b6000601f19601f8301169050919050565b615249806200032a6000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806346dc11f6146100885780638c9b9f3d146100c657806390dbf9d514610108578063acb3f70414610145578063bdb2305314610188578063cebaa49f146101c5578063f4c2cf3614610202575b600080fd5b34801561009457600080fd5b506100af60048036036100aa91908101906144b6565b610244565b6040516100bd929190614b4f565b60405180910390f35b3480156100d257600080fd5b506100ed60048036036100e89190810190614467565b61089c565b6040516100ff96959493929190614aa2565b60405180910390f35b34801561011457600080fd5b5061012f600480360361012a9190810190614538565b61171c565b60405161013c9190614a87565b60405180910390f35b34801561015157600080fd5b5061016c600480360361016791908101906144b6565b611cd7565b60405161017f9796959493929190614bbc565b60405180910390f35b34801561019457600080fd5b506101af60048036036101aa919081019061460b565b612647565b6040516101bc9190614a87565b60405180910390f35b3480156101d157600080fd5b506101ec60048036036101e7919081019061459f565b612e17565b6040516101f99190614a87565b60405180910390f35b34801561020e57600080fd5b5061022960048036036102249190810190614538565b6133d7565b60405161023b96959493929190614aa2565b60405180910390f35b600060606000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b656040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016102f99190614b9a565b602060405180830381600087803b15801561031357600080fd5b505af1158015610327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061034b9190810190614415565b93508373ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156103b157600080fd5b505af11580156103c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103e9919081019061439a565b92508273ffffffffffffffffffffffffffffffffffffffff1663ae763db5886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104409190614e04565b600060405180830381600087803b15801561045a57600080fd5b505af115801561046e573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663d62b54b460026040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104c89190614f8d565b600060405180830381600087803b1580156104e257600080fd5b505af11580156104f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663d8ac59576040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610586929190614c47565b602060405180830381600087803b1580156105a057600080fd5b505af11580156105b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d891908101906143c3565b9150600095506020604051908101604052806000815250945060008273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561065757600080fd5b505af115801561066b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061068f919081019061443e565b1315610893578173ffffffffffffffffffffffffffffffffffffffff16633dd2b61460006040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106eb9190614b7f565b602060405180830381600087803b15801561070557600080fd5b505af1158015610719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061073d91908101906143ec565b90508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161079290614e6e565b602060405180830381600087803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107e4919081019061443e565b95508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161083990614d8f565b600060405180830381600087803b15801561085357600080fd5b505af1158015610867573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061089091908101906144f7565b94505b50505050915091565b6000606080606080606060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b656040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016109599190614b9a565b602060405180830381600087803b15801561097357600080fd5b505af1158015610987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109ab9190810190614415565b94508473ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610a1157600080fd5b505af1158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a49919081019061439a565b93508373ffffffffffffffffffffffffffffffffffffffff1663d62b54b48f6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610aa09190614f5f565b600060405180830381600087803b158015610aba57600080fd5b505af1158015610ace573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663d8ac59576040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b5e929190614c47565b602060405180830381600087803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb091908101906143c3565b92508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610c1657600080fd5b505af1158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c4e919081019061443e565b9a508373ffffffffffffffffffffffffffffffffffffffff16633249273760018f038e6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610caa929190614b26565b600060405180830381600087803b158015610cc457600080fd5b505af1158015610cd8573d6000803e3d60","00fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663d8ac59576040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d68929190614c47565b602060405180830381600087803b158015610d8257600080fd5b505af1158015610d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dba91908101906143c3565b92508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610e2057600080fd5b505af1158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e58919081019061443e565b604051908082528060200260200182016040528015610e8b57816020015b6060815260200190600190039081610e765790505b5099508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f2a919081019061443e565b604051908082528060200260200182016040528015610f5d57816020015b6060815260200190600190039081610f485790505b5098508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610fc457600080fd5b505af1158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ffc919081019061443e565b60405190808252806020026020018201604052801561102a5781602001602082028038833980820191505090505b5097508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561109157600080fd5b505af11580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110c9919081019061443e565b6040519080825280602002602001820160405280156110fc57816020015b60608152602001906001900390816110e75790505b5096508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561116357600080fd5b505af1158015611177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061119b919081019061443e565b6040519080825280602002602001820160405280156111c95781602001602082028038833980820191505090505b509550600091505b8273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561123557600080fd5b505af1158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061126d919081019061443e565b8212156116f9578273ffffffffffffffffffffffffffffffffffffffff16633dd2b614836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016112c99190614a87565b602060405180830381600087803b1580156112e357600080fd5b505af11580156112f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061131b91908101906143ec565b90508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161137090614de4565b600060405180830381600087803b15801561138a57600080fd5b505af115801561139e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506113c791908101906144f7565b8a838151811015156113d557fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161143590614ebc565b600060405180830381600087803b15801561144f57600080fd5b505af1158015611463573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061148c91908101906144f7565b898381518110151561149a57fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016114fa90614e6e565b602060405180830381600087803b15801561151457600080fd5b505af1158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061154c919081019061443e565b888381518110151561155a57fe5b90602001906020020181815250508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016115bb90614d3a565b600060405180830381600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061161291908101906144f7565b878381518110151561162057fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161168090614fbb565b602060405180830381600087803b15801561169a57600080fd5b505af11580156116ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116d2919081019061443e565b86838151811015156116e057fe5b90602001906020020181815250508160010191506111d1565b8a8a8a8a8a8a9a509a509a509a509a509a50505050505093975093979195509350565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b656040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016117cf9190614b9a565b602060405180830381600087803b1580156117e957600080fd5b505af11580156117fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118219190810190614415565b93508373ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561188757600080fd5b505af115801561189b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118bf91908101906143ec565b92508273ffffffffffffffffffffffffffffffffffffffff1663def42698876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016119169190614e8e565b600060405180830381600087803b15801561193057600080fd5b505af1158015611944573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161199d9190614f31565b600060405180830381600087803b1580156119b757600080fd5b505af11580156119cb573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a6b919081019061439a565b91508173ffffffffffffffffffffffffffffffffffffffff1663ae763db56040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611af79190614e39565b600060405180830381600087803b158015611b1157600080fd5b505af1158015611b25573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663ae763db5896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611b7e9190614e04565b600060405180830381600087803b158015611b9857600080fd5b505af1158015611bac573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663664b37d66040805190810160405280600b81526020017f745f636f7079726967687400000000000000000000000000000000000000000081525085856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611c3e93929190614ca7565b602060405180830381600087803b158015611c5857600080fd5b505af1158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c90919081019061443e565b90507f6ed593c74a184d9555aca9a2f9172f8e47181f0e14aca95c4ab9ed5a5c0ae06381604051611cc19190614a87565b60405180910390a1809450505050509392505050","565b60608060006060806000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b656040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611d939190614b9a565b602060405180830381600087803b158015611dad57600080fd5b505af1158015611dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611de59190810190614415565b93508373ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611e4b57600080fd5b505af1158015611e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e83919081019061439a565b92508273ffffffffffffffffffffffffffffffffffffffff1663ae763db58d6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611eda9190614e04565b600060405180830381600087803b158015611ef457600080fd5b505af1158015611f08573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663d8ac59576040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611f98929190614c47565b602060405180830381600087803b158015611fb257600080fd5b505af1158015611fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fea91908101906143c3565b915060206040519081016040528060008152509a5060206040519081016040528060008152509950600098506020604051908101604052806000815250975060206040519081016040528060008152509650600095506000945060008273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156120aa57600080fd5b505af11580156120be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120e2919081019061443e565b1315612638578173ffffffffffffffffffffffffffffffffffffffff16633dd2b61460006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161213e9190614b7f565b602060405180830381600087803b15801561215857600080fd5b505af115801561216c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061219091908101906143ec565b90508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016121e590614ebc565b600060405180830381600087803b1580156121ff57600080fd5b505af1158015612213573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061223c91908101906144f7565b9a508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161229190614ce5565b600060405180830381600087803b1580156122ab57600080fd5b505af11580156122bf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506122e891908101906144f7565b99508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161233d90614e6e565b602060405180830381600087803b15801561235757600080fd5b505af115801561236b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061238f919081019061443e565b98508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016123e490614d8f565b600060405180830381600087803b1580156123fe57600080fd5b505af1158015612412573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061243b91908101906144f7565b97508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161249090614d3a565b600060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506124e791908101906144f7565b96508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161253c90614fbb565b602060405180830381600087803b15801561255657600080fd5b505af115801561256a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061258e919081019061443e565b95508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016125e390614f11565b602060405180830381600087803b1580156125fd57600080fd5b505af1158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612635919081019061443e565b94505b50505050919395979092949650565b60008060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b656040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016126fd9190614b9a565b602060405180830381600087803b15801561271757600080fd5b505af115801561272b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061274f9190810190614415565b955060019450600093504292508573ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156127c057600080fd5b505af11580156127d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127f891908101906143ec565b91508173ffffffffffffffffffffffffffffffffffffffff16631a391cb46040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016128849190614e39565b600060405180830381600087803b15801561289e57600080fd5b505af11580156128b2573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb48d6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161290b9190614e04565b600060405180830381600087803b15801561292557600080fd5b505af1158015612939573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb48c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016129929190614edc565b600060405180830381600087803b1580156129ac57600080fd5b505af11580156129c0573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb48b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612a199190614d05565b600060405180830381600087803b158015612a3357600080fd5b505af1158015612a47573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb48a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612aa09190614daf565b600060405180830381600087803b158015612aba57600080fd5b505af1158015612ace573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663def42698856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612b279190614e8e565b600060405180830381600087803b158015612b4157600080fd5b505af1158015612b55573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb4896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612bae9190614d5a565b600060405180830381600087803b158015612bc857600080fd5b505af1158015612bdc573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663f2f4ee6d846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612c359190614fdb565b600060405180830381600087803b158015612c4f57600080fd5b505af1158015612c63573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663def42698866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612cbc9190614f5f565b600060405180830381600087803b158015612cd657600080fd","5b505af1158015612cea573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff16634c6f30c06040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612d7a929190614c77565b602060405180830381600087803b158015612d9457600080fd5b505af1158015612da8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612dcc919081019061443e565b90507fe18305ab457e8f2c537483f422ed6e449b68168823b550995f1fc446dcf2a6a281604051612dfd9190614a87565b60405180910390a180965050505050505095945050505050565b6000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b656040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612ecb9190614b9a565b602060405180830381600087803b158015612ee557600080fd5b505af1158015612ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f1d9190810190614415565b9450600193508473ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612f8757600080fd5b505af1158015612f9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612fbf91908101906143ec565b92508273ffffffffffffffffffffffffffffffffffffffff16631a391cb4886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016130169190614daf565b600060405180830381600087803b15801561303057600080fd5b505af1158015613044573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161309d9190614f5f565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561313357600080fd5b505af1158015613147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061316b919081019061439a565b91508173ffffffffffffffffffffffffffffffffffffffff1663ae763db56040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016131f79190614e39565b600060405180830381600087803b15801561321157600080fd5b505af1158015613225573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663ae763db5896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161327e9190614e04565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663664b37d66040805190810160405280600b81526020017f745f636f7079726967687400000000000000000000000000000000000000000081525085856040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161333e93929190614ca7565b602060405180830381600087803b15801561335857600080fd5b505af115801561336c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613390919081019061443e565b90507f6ed593c74a184d9555aca9a2f9172f8e47181f0e14aca95c4ab9ed5a5c0ae063816040516133c19190614a87565b60405180910390a1809550505050505092915050565b6000606080606080606060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b656040805190810160405280600b81526020017f745f636f707972696768740000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016134949190614b9a565b602060405180830381600087803b1580156134ae57600080fd5b505af11580156134c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134e69190810190614415565b94508473ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561354c57600080fd5b505af1158015613560573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613584919081019061439a565b935060008e511115613618578373ffffffffffffffffffffffffffffffffffffffff1663ae763db58f6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016135e59190614daf565b600060405180830381600087803b1580156135ff57600080fd5b505af1158015613613573d6000803e3d6000fd5b505050505b8473ffffffffffffffffffffffffffffffffffffffff1663d8ac59576040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016136a4929190614c47565b602060405180830381600087803b1580156136be57600080fd5b505af11580156136d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136f691908101906143c3565b92508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561375c57600080fd5b505af1158015613770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613794919081019061443e565b9a508373ffffffffffffffffffffffffffffffffffffffff16633249273760018f038e6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016137f0929190614b26565b600060405180830381600087803b15801561380a57600080fd5b505af115801561381e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663d8ac59576040805190810160405280600b81526020017f745f636f70797269676874000000000000000000000000000000000000000000815250866040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016138ae929190614c47565b602060405180830381600087803b1580156138c857600080fd5b505af11580156138dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061390091908101906143c3565b92508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561396657600080fd5b505af115801561397a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061399e919081019061443e565b6040519080825280602002602001820160405280156139d157816020015b60608152602001906001900390816139bc5790505b5099508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613a3857600080fd5b505af1158015613a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613a70919081019061443e565b604051908082528060200260200182016040528015613aa357816020015b6060815260200190600190039081613a8e5790505b5098508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613b0a57600080fd5b505af1158015613b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b42919081019061443e565b604051908082528060200260200182016040528015613b705781602001602082028038833980820191505090505b5097508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613bd757600080fd5b505af1158015613beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613c0f919081019061443e565b604051908082528060200260200182016040528015613c4257816020015b6060815260200190600190039081613c2d5790505b5096508273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613ca957600080fd5b505af1158015613cbd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061","3ce1919081019061443e565b604051908082528060200260200182016040528015613d0f5781602001602082028038833980820191505090505b509550600091505b8273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015613d7b57600080fd5b505af1158015613d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613db3919081019061443e565b82121561423f578273ffffffffffffffffffffffffffffffffffffffff16633dd2b614836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613e0f9190614a87565b602060405180830381600087803b158015613e2957600080fd5b505af1158015613e3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613e6191908101906143ec565b90508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613eb690614de4565b600060405180830381600087803b158015613ed057600080fd5b505af1158015613ee4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250613f0d91908101906144f7565b8a83815181101515613f1b57fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613f7b90614ebc565b600060405180830381600087803b158015613f9557600080fd5b505af1158015613fa9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250613fd291908101906144f7565b8983815181101515613fe057fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161404090614f11565b602060405180830381600087803b15801561405a57600080fd5b505af115801561406e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614092919081019061443e565b88838151811015156140a057fe5b90602001906020020181815250508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161410190614d3a565b600060405180830381600087803b15801561411b57600080fd5b505af115801561412f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061415891908101906144f7565b878381518110151561416657fe5b906020019060200201819052508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016141c690614fbb565b602060405180830381600087803b1580156141e057600080fd5b505af11580156141f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614218919081019061443e565b868381518110151561422657fe5b9060200190602002018181525050816001019150613d17565b8a8a8a8a8a8a9a509a509a509a509a509a50505050505093975093979195509350565b600061426e8251615103565b905092915050565b60006142828251615115565b905092915050565b60006142968251615127565b905092915050565b60006142aa8251615139565b905092915050565b60006142be823561514b565b905092915050565b60006142d2825161514b565b905092915050565b60006142e68235615155565b905092915050565b600082601f830112151561430157600080fd5b813561431461430f82615036565b615009565b9150808252602083016020830185838301111561433057600080fd5b61433b8382846151bc565b50505092915050565b600082601f830112151561435757600080fd5b815161436a61436582615036565b615009565b9150808252602083016020830185838301111561438657600080fd5b6143918382846151cb565b50505092915050565b6000602082840312156143ac57600080fd5b60006143ba84828501614262565b91505092915050565b6000602082840312156143d557600080fd5b60006143e384828501614276565b91505092915050565b6000602082840312156143fe57600080fd5b600061440c8482850161428a565b91505092915050565b60006020828403121561442757600080fd5b60006144358482850161429e565b91505092915050565b60006020828403121561445057600080fd5b600061445e848285016142c6565b91505092915050565b60008060006060848603121561447c57600080fd5b600061448a868287016142da565b935050602061449b868287016142b2565b92505060406144ac868287016142b2565b9150509250925092565b6000602082840312156144c857600080fd5b600082013567ffffffffffffffff8111156144e257600080fd5b6144ee848285016142ee565b91505092915050565b60006020828403121561450957600080fd5b600082015167ffffffffffffffff81111561452357600080fd5b61452f84828501614344565b91505092915050565b60008060006060848603121561454d57600080fd5b600084013567ffffffffffffffff81111561456757600080fd5b614573868287016142ee565b9350506020614584868287016142b2565b9250506040614595868287016142b2565b9150509250925092565b600080604083850312156145b257600080fd5b600083013567ffffffffffffffff8111156145cc57600080fd5b6145d8858286016142ee565b925050602083013567ffffffffffffffff8111156145f557600080fd5b614601858286016142ee565b9150509250929050565b600080600080600060a0868803121561462357600080fd5b600086013567ffffffffffffffff81111561463d57600080fd5b614649888289016142ee565b955050602086013567ffffffffffffffff81111561466657600080fd5b614672888289016142ee565b945050604086013567ffffffffffffffff81111561468f57600080fd5b61469b888289016142ee565b935050606086013567ffffffffffffffff8111156146b857600080fd5b6146c4888289016142ee565b925050608086013567ffffffffffffffff8111156146e157600080fd5b6146ed888289016142ee565b9150509295509295909350565b60006147058261507c565b80845260208401935061471783615062565b60005b828110156147495761472d8683516147e1565b614736826150a8565b915060208601955060018101905061471a565b50849250505092915050565b600061476082615087565b808452602084019350836020820285016147798561506f565b60005b848110156147b2578383038852614794838351614853565b925061479f826150b5565b915060208801975060018101905061477c565b508196508694505050505092915050565b6147cc81615162565b82525050565b6147db81615174565b82525050565b6147ea816150e2565b82525050565b6147f981615186565b82525050565b61480881615198565b82525050565b614817816151aa565b82525050565b60006148288261509d565b80845261483c8160208601602086016151cb565b614845816151fe565b602085010191505092915050565b600061485e82615092565b8084526148728160208601602086016151cb565b61487b816151fe565b602085010191505092915050565b6000600482527f68617368000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600682527f617574686f7200000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f6f776e65726964000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f75756964000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f74625f6e616d65000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600682527f616d6f756e7400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600582527f7469746c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600682527f73746174757300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f74696d65000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b614a81816150f9565b82525050565b6000602082019050614a9c60008301846147e1565b92915050565b600060c082019050614ab760008301896147e1565b8181036020830152614ac98188614755565b90508181036040830152614add8187614755565b90508181036060830152614af181866146fa565b90508181036080830152614b058185614755565b905081810360a0830152614b1981846146fa565b9050979650505050505050565b6000604082019050614b3b60008301856147e1565b614b4860208301846147e1565b9392505050565b6000604082019050614b6460008301856147e1565b8181036020830152614b76818461481d565b90509392505050565b6000602082019050614b9460008301846147ff565b92915050565b60006020820190508181036000830152614bb48184614853565b905092915050565b600060e0820190508181036000830152614bd6818a61481d565b90508181036020830152614bea818961481d565b9050614bf960408301886147e1565b8181036060830152614c0b818761481d565b90508181036080830152614c1f818661481d565b9050614c2e60a08301856147e1565b614c3b60c08301846147e1565b98975050505050505050565b60006040820190508181036000830152614c618185614853565b9050614c7060208301846147c3565b9392505050565b60006040820190508181036000830152614c918185614853565b9050614ca060208301846147d2565b9392505050565b60006060820190508181036000830152614cc18186614853565b9050614cd060208301856147d2565b614cdd6040","8301846147c3565b949350505050565b60006020820190508181036000830152614cfe81614889565b9050919050565b60006040820190508181036000830152614d1e81614889565b90508181036020830152614d32818461481d565b905092915050565b60006020820190508181036000830152614d53816148c0565b9050919050565b60006040820190508181036000830152614d73816148c0565b90508181036020830152614d87818461481d565b905092915050565b60006020820190508181036000830152614da8816148f7565b9050919050565b60006040820190508181036000830152614dc8816148f7565b90508181036020830152614ddc818461481d565b905092915050565b60006020820190508181036000830152614dfd8161492e565b9050919050565b60006040820190508181036000830152614e1d8161492e565b90508181036020830152614e31818461481d565b905092915050565b60006040820190508181036000830152614e5281614965565b90508181036020830152614e668184614853565b905092915050565b60006020820190508181036000830152614e878161499c565b9050919050565b60006040820190508181036000830152614ea78161499c565b9050614eb660208301846147e1565b92915050565b60006020820190508181036000830152614ed5816149d3565b9050919050565b60006040820190508181036000830152614ef5816149d3565b90508181036020830152614f09818461481d565b905092915050565b60006020820190508181036000830152614f2a81614a0a565b9050919050565b60006040820190508181036000830152614f4a81614a0a565b9050614f5960208301846147e1565b92915050565b60006040820190508181036000830152614f7881614a0a565b9050614f8760208301846147f0565b92915050565b60006040820190508181036000830152614fa681614a0a565b9050614fb5602083018461480e565b92915050565b60006020820190508181036000830152614fd481614a41565b9050919050565b60006040820190508181036000830152614ff481614a41565b90506150036020830184614a78565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561502c57600080fd5b8060405250919050565b600067ffffffffffffffff82111561504d57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60008160000b9050919050565b6000819050919050565b600061510e826150c2565b9050919050565b6000615120826150c2565b9050919050565b6000615132826150c2565b9050919050565b6000615144826150c2565b9050919050565b6000819050919050565b60008160000b9050919050565b600061516d826150c2565b9050919050565b600061517f826150c2565b9050919050565b6000615191826150ec565b9050919050565b60006151a3826150e2565b9050919050565b60006151b5826150e2565b9050919050565b82818337600083830152505050565b60005b838110156151e95780820151818401526020810190506151ce565b838111156151f8576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820af4d57e2742e6c975c31be3174bc224a138821f025f6a052776ada5e23115dbe6c6578706572696d656e74616cf50037"};

    public static final String SM_BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"constant\":false,\"inputs\":[{\"name\":\"uuid\",\"type\":\"string\"},{\"name\":\"status\",\"type\":\"int256\"},{\"name\":\"amount\",\"type\":\"int256\"}],\"name\":\"setStatusAndAmount\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"uuid\",\"type\":\"string\"}],\"name\":\"getAmountOwneridByUuid\",\"outputs\":[{\"name\":\"amount\",\"type\":\"int256\"},{\"name\":\"ownerid\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"uuid\",\"type\":\"string\"},{\"name\":\"ownerid\",\"type\":\"string\"}],\"name\":\"setOwnerid\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"ownerid\",\"type\":\"string\"},{\"name\":\"index\",\"type\":\"int256\"},{\"name\":\"size\",\"type\":\"int256\"}],\"name\":\"selectCopyrightByOwnerid\",\"outputs\":[{\"name\":\"totalCount\",\"type\":\"int256\"},{\"name\":\"uuids\",\"type\":\"string[]\"},{\"name\":\"titles\",\"type\":\"string[]\"},{\"name\":\"statuss\",\"type\":\"int256[]\"},{\"name\":\"authors\",\"type\":\"string[]\"},{\"name\":\"times\",\"type\":\"int256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"uuid\",\"type\":\"string\"},{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"string\"},{\"name\":\"ownerid\",\"type\":\"string\"},{\"name\":\"author\",\"type\":\"string\"}],\"name\":\"insertCopyright\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"uuid\",\"type\":\"string\"}],\"name\":\"getCopyrightByUuid\",\"outputs\":[{\"name\":\"title\",\"type\":\"string\"},{\"name\":\"hash\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"int256\"},{\"name\":\"ownerid\",\"type\":\"string\"},{\"name\":\"author\",\"type\":\"string\"},{\"name\":\"time\",\"type\":\"int256\"},{\"name\":\"status\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"status\",\"type\":\"int8\"},{\"name\":\"index\",\"type\":\"int256\"},{\"name\":\"size\",\"type\":\"int256\"}],\"name\":\"selectCopyrightByStatus\",\"outputs\":[{\"name\":\"totalCount\",\"type\":\"int256\"},{\"name\":\"uuids\",\"type\":\"string[]\"},{\"name\":\"titles\",\"type\":\"string[]\"},{\"name\":\"amounts\",\"type\":\"int256[]\"},{\"name\":\"authors\",\"type\":\"string[]\"},{\"name\":\"times\",\"type\":\"int256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertCopyrightResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateCopyrightResult\",\"type\":\"event\"}]"};

    public static final String ABI = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_SETSTATUSANDAMOUNT = "setStatusAndAmount";

    public static final String FUNC_GETAMOUNTOWNERIDBYUUID = "getAmountOwneridByUuid";

    public static final String FUNC_SETOWNERID = "setOwnerid";

    public static final String FUNC_SELECTCOPYRIGHTBYOWNERID = "selectCopyrightByOwnerid";

    public static final String FUNC_INSERTCOPYRIGHT = "insertCopyright";

    public static final String FUNC_GETCOPYRIGHTBYUUID = "getCopyrightByUuid";

    public static final String FUNC_SELECTCOPYRIGHTBYSTATUS = "selectCopyrightByStatus";

    public static final Event INSERTCOPYRIGHTRESULT_EVENT = new Event("InsertCopyrightResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event UPDATECOPYRIGHTRESULT_EVENT = new Event("UpdateCopyrightResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    protected Copyright(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public TransactionReceipt setStatusAndAmount(String uuid, BigInteger status, BigInteger amount) {
        final Function function = new Function(
                FUNC_SETSTATUSANDAMOUNT, 
                Arrays.<Type>asList(new Utf8String(uuid),
                new Int256(status),
                new Int256(amount)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] setStatusAndAmount(String uuid, BigInteger status, BigInteger amount, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_SETSTATUSANDAMOUNT, 
                Arrays.<Type>asList(new Utf8String(uuid),
                new Int256(status),
                new Int256(amount)),
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForSetStatusAndAmount(String uuid, BigInteger status, BigInteger amount) {
        final Function function = new Function(
                FUNC_SETSTATUSANDAMOUNT, 
                Arrays.<Type>asList(new Utf8String(uuid),
                new Int256(status),
                new Int256(amount)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<String, BigInteger, BigInteger> getSetStatusAndAmountInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_SETSTATUSANDAMOUNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<String, BigInteger, BigInteger>(

                (String) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue(), 
                (BigInteger) results.get(2).getValue()
                );
    }

    public Tuple1<BigInteger> getSetStatusAndAmountOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_SETSTATUSANDAMOUNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple2<BigInteger, String> getAmountOwneridByUuid(String uuid) throws ContractException {
        final Function function = new Function(FUNC_GETAMOUNTOWNERIDBYUUID, 
                Arrays.<Type>asList(new Utf8String(uuid)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple2<BigInteger, String>(
                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue());
    }

    public TransactionReceipt setOwnerid(String uuid, String ownerid) {
        final Function function = new Function(
                FUNC_SETOWNERID, 
                Arrays.<Type>asList(new Utf8String(uuid),
                new Utf8String(ownerid)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] setOwnerid(String uuid, String ownerid, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_SETOWNERID, 
                Arrays.<Type>asList(new Utf8String(uuid),
                new Utf8String(ownerid)),
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForSetOwnerid(String uuid, String ownerid) {
        final Function function = new Function(
                FUNC_SETOWNERID, 
                Arrays.<Type>asList(new Utf8String(uuid),
                new Utf8String(ownerid)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<String, String> getSetOwneridInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_SETOWNERID, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<String, String>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getSetOwneridOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_SETOWNERID, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple6<BigInteger, List<String>, List<String>, List<BigInteger>, List<String>, List<BigInteger>> selectCopyrightByOwnerid(String ownerid, BigInteger index, BigInteger size) throws ContractException {
        final Function function = new Function(FUNC_SELECTCOPYRIGHTBYOWNERID, 
                Arrays.<Type>asList(new Utf8String(ownerid),
                new Int256(index),
                new Int256(size)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<DynamicArray<Int256>>() {}, new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<DynamicArray<Int256>>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple6<BigInteger, List<String>, List<String>, List<BigInteger>, List<String>, List<BigInteger>>(
                (BigInteger) results.get(0).getValue(), 
                convertToNative((List<Utf8String>) results.get(1).getValue()), 
                convertToNative((List<Utf8String>) results.get(2).getValue()), 
                convertToNative((List<Int256>) results.get(3).getValue()), 
                convertToNative((List<Utf8String>) results.get(4).getValue()), 
                convertToNative((List<Int256>) results.get(5).getValue()));
    }

    public TransactionReceipt insertCopyright(String uuid, String title, String hash, String ownerid, String author) {
        final Function function = new Function(
                FUNC_INSERTCOPYRIGHT, 
                Arrays.<Type>asList(new Utf8String(uuid),
                new Utf8String(title),
                new Utf8String(hash),
                new Utf8String(ownerid),
                new Utf8String(author)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] insertCopyright(String uuid, String title, String hash, String ownerid, String author, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERTCOPYRIGHT, 
                Arrays.<Type>asList(new Utf8String(uuid),
                new Utf8String(title),
                new Utf8String(hash),
                new Utf8String(ownerid),
                new Utf8String(author)),
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForInsertCopyright(String uuid, String title, String hash, String ownerid, String author) {
        final Function function = new Function(
                FUNC_INSERTCOPYRIGHT, 
                Arrays.<Type>asList(new Utf8String(uuid),
                new Utf8String(title),
                new Utf8String(hash),
                new Utf8String(ownerid),
                new Utf8String(author)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple5<String, String, String, String, String> getInsertCopyrightInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERTCOPYRIGHT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple5<String, String, String, String, String>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue(), 
                (String) results.get(4).getValue()
                );
    }

    public Tuple1<BigInteger> getInsertCopyrightOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERTCOPYRIGHT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple7<String, String, BigInteger, String, String, BigInteger, BigInteger> getCopyrightByUuid(String uuid) throws ContractException {
        final Function function = new Function(FUNC_GETCOPYRIGHTBYUUID, 
                Arrays.<Type>asList(new Utf8String(uuid)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}, new TypeReference<Int256>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple7<String, String, BigInteger, String, String, BigInteger, BigInteger>(
                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (BigInteger) results.get(2).getValue(), 
                (String) results.get(3).getValue(), 
                (String) results.get(4).getValue(), 
                (BigInteger) results.get(5).getValue(), 
                (BigInteger) results.get(6).getValue());
    }

    public Tuple6<BigInteger, List<String>, List<String>, List<BigInteger>, List<String>, List<BigInteger>> selectCopyrightByStatus(BigInteger status, BigInteger index, BigInteger size) throws ContractException {
        final Function function = new Function(FUNC_SELECTCOPYRIGHTBYSTATUS, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.generated.Int8(status), 
                new Int256(index),
                new Int256(size)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<DynamicArray<Int256>>() {}, new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<DynamicArray<Int256>>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple6<BigInteger, List<String>, List<String>, List<BigInteger>, List<String>, List<BigInteger>>(
                (BigInteger) results.get(0).getValue(), 
                convertToNative((List<Utf8String>) results.get(1).getValue()), 
                convertToNative((List<Utf8String>) results.get(2).getValue()), 
                convertToNative((List<Int256>) results.get(3).getValue()), 
                convertToNative((List<Utf8String>) results.get(4).getValue()), 
                convertToNative((List<Int256>) results.get(5).getValue()));
    }

    public List<InsertCopyrightResultEventResponse> getInsertCopyrightResultEvents(TransactionReceipt transactionReceipt) {
        List<EventValuesWithLog> valueList = extractEventParametersWithLog(INSERTCOPYRIGHTRESULT_EVENT, transactionReceipt);
        ArrayList<InsertCopyrightResultEventResponse> responses = new ArrayList<InsertCopyrightResultEventResponse>(valueList.size());
        for (EventValuesWithLog eventValues : valueList) {
            InsertCopyrightResultEventResponse typedResponse = new InsertCopyrightResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeInsertCopyrightResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(INSERTCOPYRIGHTRESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeInsertCopyrightResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(INSERTCOPYRIGHTRESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<UpdateCopyrightResultEventResponse> getUpdateCopyrightResultEvents(TransactionReceipt transactionReceipt) {
        List<EventValuesWithLog> valueList = extractEventParametersWithLog(UPDATECOPYRIGHTRESULT_EVENT, transactionReceipt);
        ArrayList<UpdateCopyrightResultEventResponse> responses = new ArrayList<UpdateCopyrightResultEventResponse>(valueList.size());
        for (EventValuesWithLog eventValues : valueList) {
            UpdateCopyrightResultEventResponse typedResponse = new UpdateCopyrightResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeUpdateCopyrightResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(UPDATECOPYRIGHTRESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeUpdateCopyrightResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(UPDATECOPYRIGHTRESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public static Copyright load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new Copyright(contractAddress, client, credential);
    }

    public static Copyright deploy(Client client, CryptoKeyPair credential) throws ContractException {
        return deploy(Copyright.class, client, credential, getBinary(client.getCryptoSuite()), "");
    }

    public static class InsertCopyrightResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class UpdateCopyrightResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }
}
